JavaScript (JS) هي لغة برمجة ديناميكية تُستخدم لإضافة التفاعلية إلى صفحات الويب وتطوير تطبيقات حديثة على جانب العميل والخادم. في هذه الدورة، سنغطي كل شيء من الأساسيات إلى المفاهيم المتقدمة لتمكينك من بناء تطبيقات قوية وفعالة.
JavaScript هي لغة برمجة تُضيف التفاعلية لصفحات الويب وتُستخدم على نطاق واسع في تطوير التطبيقات.
<script>
داخل الصفحة أو ملف خارجي (<script src="app.js">
).console.log("مرحبًا!");
alert("اهلاً بك!");
console.log("مرحبًا بك في JavaScript!");
alert("هذا مثال بسيط");
النتيجة: رسالة في وحدة التحكم وتنبيه في المتصفح.
المتغيرات تُستخدم لتخزين البيانات، وJavaScript تدعم أنواع بيانات متعددة.
var
: طريقة قديمة (مشاكل في النطاق).let
: للمتغيرات القابلة للتغيير (block-scoped).const
: للثوابت (لا تتغير قيمتها).number
): مثل 42
، 3.14
.string
): مثل "مرحبًا"
.boolean
): true
، false
.null
: قيمة فارغة.undefined
: غير معرف.object
): مثل {name: "علي"}
.array
): مثل [1, 2, 3]
.
let name = "علي";
const age = 25;
let isStudent = true;
console.log(name, age, isStudent);
العمليات تُستخدم لمعالجة البيانات.
+
(جمع)، -
(طرح)، *
(ضرب)، /
(قسمة)، %
(الباقي).&&
(و)، ||
(أو)، !
(ليس).==
(تساوي)، ===
(تساوي صارم)، !=
، >
، <
.
let x = 10;
let y = 5;
console.log(x + y); // 15
console.log(x > y && y !== 0); // true
تُستخدم لاتخاذ القرارات بناءً على شروط.
let score = 85;
if (score >= 90) {
console.log("ممتاز");
} else if (score >= 75) {
console.log("جيد جدًا");
} else {
console.log("حاول مرة أخرى");
}
// Ternary
let result = score >= 75 ? "نجاح" : "رسوب";
console.log(result);
تُستخدم لتكرار تنفيذ الكود.
for (let i = 0; i < 5; i++) {
console.log(i);
}
let arr = [1, 2, 3];
for (let val of arr) {
console.log(val);
}
الدوال تُستخدم لتنظيم الكود وإعادة استخدامه.
function
.return
.
function add(a, b) {
return a + b;
}
console.log(add(3, 4)); // 7
const subtract = (x, y) => x - y;
console.log(subtract(10, 3)); // 7
الكائنات تُستخدم لتخزين البيانات كمجموعات من المفاتيح والقيم.
{key: value}
.obj.key
) أو الأقواس (obj["key"]
).
const user = {
name: "علي",
age: 25,
greet: function() {
console.log(`مرحبًا، ${this.name}`);
}
};
user.greet(); // مرحبًا، علي
المصفوفات تُستخدم لتخزين قوائم من البيانات.
[1, 2, 3]
.push
: إضافة عنصر.pop
: حذف آخر عنصر.map
: تحويل العناصر.filter
: تصفية العناصر.
let numbers = [1, 2, 3];
numbers.push(4);
console.log(numbers); // [1, 2, 3, 4]
let doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6, 8]
DOM (Document Object Model) يتيح التفاعل مع عناصر HTML.
document.getElementById
document.querySelector
document.getElementsByClassName
element.style
، element.textContent
.
let para = document.querySelector("p");
para.style.color = "red";
para.textContent = "تم التغيير!";
الأحداث تُتيح التفاعل مع تصرفات المستخدم.
onclick
، onchange
، onmouseover
.addEventListener
.
document.querySelector("button").addEventListener("click", () => {
alert("تم النقر!");
});
الوعود تُستخدم للتعامل مع العمليات غير المتزامنة.
then
للنجاح، catch
للأخطاء.
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("تم!"), 1000);
});
promise.then(result => console.log(result));
صيغة حديثة للتعامل مع الوعود.
async function fetchData() {
let response = await fetch("https://api.example.com");
let data = await response.json();
console.log(data);
}
fetchData();
JSON هو تنسيق بيانات شائع في JavaScript.
let obj = {name: "علي", age: 25};
let json = JSON.stringify(obj);
console.log(json); // {"name":"علي","age":25}
let parsed = JSON.parse(json);
console.log(parsed.name); // علي
BOM (Browser Object Model) يتيح التحكم في المتصفح.
window.location.href = "https://example.com";
window.history.back();
كلمة this
تُحدد السياق الحالي.
call
، apply
، bind
.window
في المتصفح.
const user = {
name: "علي",
greet() {
console.log(this.name);
}
};
user.greet(); // علي
let fn = user.greet;
fn.bind({name: "سارة"})(); // سارة
النطاق يُحدد رؤية المتغيرات، والإغلاق يحفظها.
function outer() {
let x = 10;
return function inner() {
console.log(x);
};
}
let fn = outer();
fn(); // 10
تنظيم الكود باستخدام الكائنات والفئات.
extends
.
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`مرحبًا، ${this.name}`);
}
}
class Student extends Person {
constructor(name, grade) {
super(name);
this.grade = grade;
}
}
let s = new Student("علي", "A");
s.greet(); // مرحبًا، علي
إدارة الأخطاء باستخدام try/catch
.
try {
let x = undefinedVar;
} catch (error) {
console.log("خطأ: " + error.message);
}
مفاهيم متقدمة في الدوال.
...args
لعدد غير محدد من المعاملات.
function sum(...numbers) {
return numbers.reduce((a, b) => a + b);
}
console.log(sum(1, 2, 3)); // 6
(function() { console.log("IIFE!"); })();
استخدام الدوال كوحدات بناء.
const add = (a, b) => a + b; // Pure
const multiplyBy = (n) => (x) => x * n;
let double = multiplyBy(2);
console.log(double(5)); // 10
تخزين البيانات في المتصفح.
localStorage.setItem("name", "علي");
console.log(localStorage.getItem("name")); // علي
جلب البيانات من الخوادم.
fetch("https://api.example.com/data")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
واجهات برمجية إضافية في المتصفح.
navigator.geolocation.getCurrentPosition(position => {
console.log(position.coords.latitude, position.coords.longitude);
});